from enum import IntEnum
from typing import overload, NewType, Optional, Tuple

from OCC.Core.Standard import *
from OCC.Core.NCollection import *
from OCC.Core.TopoDS import *
from OCC.Core.ShapeBuild import *
from OCC.Core.Message import *
from OCC.Core.ShapeExtend import *
from OCC.Core.Geom import *
from OCC.Core.TopLoc import *
from OCC.Core.ShapeAnalysis import *
from OCC.Core.ShapeConstruct import *
from OCC.Core.Geom2d import *
from OCC.Core.TopAbs import *
from OCC.Core.TopTools import *

class ShapeFix_SequenceOfWireSegment:
    def Assign(self, theItem: ShapeFix_WireSegment) -> ShapeFix_WireSegment: ...
    def Clear(self) -> None: ...
    def First(self) -> ShapeFix_WireSegment: ...
    def IsDeletables(self) -> bool: ...
    def IsEmpty(self) -> bool: ...
    def Last(self) -> ShapeFix_WireSegment: ...
    def Length(self) -> int: ...
    def Lower(self) -> int: ...
    def Prepend(self, theItem: ShapeFix_WireSegment) -> ShapeFix_WireSegment: ...
    def RemoveFirst(self) -> None: ...
    def Reverse(self) -> None: ...
    def SetValue(self, theIndex: int, theValue: ShapeFix_WireSegment) -> None: ...
    def Size(self) -> int: ...
    def UpdateUpperBound(self, int) -> None: ...
    def UpdateLowerBound(self, int) -> None: ...
    def Upper(self) -> int: ...
    def Value(self, theIndex: int) -> ShapeFix_WireSegment: ...
    def __init__(self) -> None: ...
    def __len__(self) -> int: ...

class shapefix:
    @staticmethod
    def EncodeRegularity(
        shape: TopoDS_Shape, tolang: Optional[float] = 1.0e-10
    ) -> None: ...
    @staticmethod
    def FixVertexPosition(
        theshape: TopoDS_Shape, theTolerance: float, thecontext: ShapeBuild_ReShape
    ) -> bool: ...
    @staticmethod
    def LeastEdgeSize(theshape: TopoDS_Shape) -> float: ...
    @staticmethod
    def RemoveSmallEdges(
        shape: TopoDS_Shape, Tolerance: float, context: ShapeBuild_ReShape
    ) -> TopoDS_Shape: ...
    @staticmethod
    def SameParameter(
        shape: TopoDS_Shape,
        enforce: bool,
        preci: Optional[float] = 0.0,
        theProgress: Optional[Message_ProgressRange] = Message_ProgressRange(),
        theMsgReg: Optional[ShapeExtend_BasicMsgRegistrator] = 0,
    ) -> bool: ...

class ShapeFix_Edge(Standard_Transient):
    def __init__(self) -> None: ...
    def FixAddCurve3d(self, edge: TopoDS_Edge) -> bool: ...
    @overload
    def FixAddPCurve(
        self,
        edge: TopoDS_Edge,
        face: TopoDS_Face,
        isSeam: bool,
        prec: Optional[float] = 0.0,
    ) -> bool: ...
    @overload
    def FixAddPCurve(
        self,
        edge: TopoDS_Edge,
        surface: Geom_Surface,
        location: TopLoc_Location,
        isSeam: bool,
        prec: Optional[float] = 0.0,
    ) -> bool: ...
    @overload
    def FixAddPCurve(
        self,
        edge: TopoDS_Edge,
        face: TopoDS_Face,
        isSeam: bool,
        surfana: ShapeAnalysis_Surface,
        prec: Optional[float] = 0.0,
    ) -> bool: ...
    @overload
    def FixAddPCurve(
        self,
        edge: TopoDS_Edge,
        surface: Geom_Surface,
        location: TopLoc_Location,
        isSeam: bool,
        surfana: ShapeAnalysis_Surface,
        prec: Optional[float] = 0.0,
    ) -> bool: ...
    def FixRemoveCurve3d(self, edge: TopoDS_Edge) -> bool: ...
    @overload
    def FixRemovePCurve(self, edge: TopoDS_Edge, face: TopoDS_Face) -> bool: ...
    @overload
    def FixRemovePCurve(
        self, edge: TopoDS_Edge, surface: Geom_Surface, location: TopLoc_Location
    ) -> bool: ...
    @overload
    def FixReversed2d(self, edge: TopoDS_Edge, face: TopoDS_Face) -> bool: ...
    @overload
    def FixReversed2d(
        self, edge: TopoDS_Edge, surface: Geom_Surface, location: TopLoc_Location
    ) -> bool: ...
    @overload
    def FixSameParameter(
        self, edge: TopoDS_Edge, tolerance: Optional[float] = 0.0
    ) -> bool: ...
    @overload
    def FixSameParameter(
        self, edge: TopoDS_Edge, face: TopoDS_Face, tolerance: Optional[float] = 0.0
    ) -> bool: ...
    @overload
    def FixVertexTolerance(self, edge: TopoDS_Edge, face: TopoDS_Face) -> bool: ...
    @overload
    def FixVertexTolerance(self, edge: TopoDS_Edge) -> bool: ...
    def Projector(self) -> ShapeConstruct_ProjectCurveOnSurface: ...
    def SetContext(self, context: ShapeBuild_ReShape) -> None: ...
    def Status(self, status: ShapeExtend_Status) -> bool: ...

class ShapeFix_EdgeConnect:
    def __init__(self) -> None: ...
    @overload
    def Add(self, aFirst: TopoDS_Edge, aSecond: TopoDS_Edge) -> None: ...
    @overload
    def Add(self, aShape: TopoDS_Shape) -> None: ...
    def Build(self) -> None: ...
    def Clear(self) -> None: ...

class ShapeFix_EdgeProjAux(Standard_Transient):
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, F: TopoDS_Face, E: TopoDS_Edge) -> None: ...
    def Compute(self, preci: float) -> None: ...
    def FirstParam(self) -> float: ...
    def Init(self, F: TopoDS_Face, E: TopoDS_Edge) -> None: ...
    def IsFirstDone(self) -> bool: ...
    def IsIso(self, C: Geom2d_Curve) -> bool: ...
    def IsLastDone(self) -> bool: ...
    def LastParam(self) -> float: ...

class ShapeFix_FaceConnect:
    def __init__(self) -> None: ...
    def Add(self, aFirst: TopoDS_Face, aSecond: TopoDS_Face) -> bool: ...
    def Build(
        self, shell: TopoDS_Shell, sewtoler: float, fixtoler: float
    ) -> TopoDS_Shell: ...
    def Clear(self) -> None: ...

class ShapeFix_FreeBounds:
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(
        self,
        shape: TopoDS_Shape,
        sewtoler: float,
        closetoler: float,
        splitclosed: bool,
        splitopen: bool,
    ) -> None: ...
    @overload
    def __init__(
        self, shape: TopoDS_Shape, closetoler: float, splitclosed: bool, splitopen: bool
    ) -> None: ...
    def GetClosedWires(self) -> TopoDS_Compound: ...
    def GetOpenWires(self) -> TopoDS_Compound: ...
    def GetShape(self) -> TopoDS_Shape: ...

class ShapeFix_IntersectionTool:
    def __init__(
        self, context: ShapeBuild_ReShape, preci: float, maxtol: Optional[float] = 1.0
    ) -> None: ...
    def Context(self) -> ShapeBuild_ReShape: ...
    def CutEdge(
        self, edge: TopoDS_Edge, pend: float, cut: float, face: TopoDS_Face
    ) -> Tuple[bool, bool]: ...
    def FixIntersectingWires(self, face: TopoDS_Face) -> bool: ...
    def FixSelfIntersectWire(
        self, sewd: ShapeExtend_WireData, face: TopoDS_Face
    ) -> Tuple[bool, int, int, int]: ...
    def SplitEdge(
        self,
        edge: TopoDS_Edge,
        param: float,
        vert: TopoDS_Vertex,
        face: TopoDS_Face,
        newE1: TopoDS_Edge,
        newE2: TopoDS_Edge,
        preci: float,
    ) -> bool: ...

class ShapeFix_Root(Standard_Transient):
    def __init__(self) -> None: ...
    def Context(self) -> ShapeBuild_ReShape: ...
    def LimitTolerance(self, toler: float) -> float: ...
    def MaxTolerance(self) -> float: ...
    def MinTolerance(self) -> float: ...
    def MsgRegistrator(self) -> ShapeExtend_BasicMsgRegistrator: ...
    def Precision(self) -> float: ...
    @overload
    def SendFail(self, shape: TopoDS_Shape, message: Message_Msg) -> None: ...
    @overload
    def SendFail(self, message: Message_Msg) -> None: ...
    @overload
    def SendMsg(
        self,
        shape: TopoDS_Shape,
        message: Message_Msg,
        gravity: Optional[Message_Gravity] = Message_Info,
    ) -> None: ...
    @overload
    def SendMsg(
        self, message: Message_Msg, gravity: Optional[Message_Gravity] = Message_Info
    ) -> None: ...
    @overload
    def SendWarning(self, shape: TopoDS_Shape, message: Message_Msg) -> None: ...
    @overload
    def SendWarning(self, message: Message_Msg) -> None: ...
    def Set(self, Root: ShapeFix_Root) -> None: ...
    def SetContext(self, context: ShapeBuild_ReShape) -> None: ...
    def SetMaxTolerance(self, maxtol: float) -> None: ...
    def SetMinTolerance(self, mintol: float) -> None: ...
    def SetMsgRegistrator(self, msgreg: ShapeExtend_BasicMsgRegistrator) -> None: ...
    def SetPrecision(self, preci: float) -> None: ...

class ShapeFix_ShapeTolerance:
    def __init__(self) -> None: ...
    def LimitTolerance(
        self,
        shape: TopoDS_Shape,
        tmin: float,
        tmax: Optional[float] = 0.0,
        styp: Optional[TopAbs_ShapeEnum] = TopAbs_SHAPE,
    ) -> bool: ...
    def SetTolerance(
        self,
        shape: TopoDS_Shape,
        preci: float,
        styp: Optional[TopAbs_ShapeEnum] = TopAbs_SHAPE,
    ) -> None: ...

class ShapeFix_SplitTool:
    def __init__(self) -> None: ...
    def CutEdge(
        self, edge: TopoDS_Edge, pend: float, cut: float, face: TopoDS_Face
    ) -> Tuple[bool, bool]: ...
    @overload
    def SplitEdge(
        self,
        edge: TopoDS_Edge,
        param: float,
        vert: TopoDS_Vertex,
        face: TopoDS_Face,
        newE1: TopoDS_Edge,
        newE2: TopoDS_Edge,
        tol3d: float,
        tol2d: float,
    ) -> bool: ...
    @overload
    def SplitEdge(
        self,
        edge: TopoDS_Edge,
        param1: float,
        param2: float,
        vert: TopoDS_Vertex,
        face: TopoDS_Face,
        newE1: TopoDS_Edge,
        newE2: TopoDS_Edge,
        tol3d: float,
        tol2d: float,
    ) -> bool: ...
    @overload
    def SplitEdge(
        self,
        edge: TopoDS_Edge,
        fp: float,
        V1: TopoDS_Vertex,
        lp: float,
        V2: TopoDS_Vertex,
        face: TopoDS_Face,
        SeqE: TopTools_SequenceOfShape,
        context: ShapeBuild_ReShape,
        tol3d: float,
        tol2d: float,
    ) -> Tuple[bool, int]: ...

class ShapeFix_WireVertex:
    def __init__(self) -> None: ...
    def Analyzer(self) -> ShapeAnalysis_WireVertex: ...
    def Fix(self) -> int: ...
    def FixSame(self) -> int: ...
    @overload
    def Init(self, wire: TopoDS_Wire, preci: float) -> None: ...
    @overload
    def Init(self, sbwd: ShapeExtend_WireData, preci: float) -> None: ...
    @overload
    def Init(self, sawv: ShapeAnalysis_WireVertex) -> None: ...
    def Wire(self) -> TopoDS_Wire: ...
    def WireData(self) -> ShapeExtend_WireData: ...

class ShapeFix_ComposeShell(ShapeFix_Root):
    def __init__(self) -> None: ...
    def GetClosedMode(self) -> bool: ...
    def SetClosedMode(self, value: bool) -> None: ...
    def DispatchWires(
        self, faces: TopTools_SequenceOfShape, wires: ShapeFix_SequenceOfWireSegment
    ) -> None: ...
    def GetTransferParamTool(self) -> ShapeAnalysis_TransferParameters: ...
    def Init(
        self,
        Grid: ShapeExtend_CompositeSurface,
        L: TopLoc_Location,
        Face: TopoDS_Face,
        Prec: float,
    ) -> None: ...
    def Perform(self) -> bool: ...
    def Result(self) -> TopoDS_Shape: ...
    def SetTransferParamTool(
        self, TransferParam: ShapeAnalysis_TransferParameters
    ) -> None: ...
    def SplitEdges(self) -> None: ...
    def Status(self, status: ShapeExtend_Status) -> bool: ...

class ShapeFix_Face(ShapeFix_Root):
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, face: TopoDS_Face) -> None: ...
    def Add(self, wire: TopoDS_Wire) -> None: ...
    def GetAutoCorrectPrecisionMode(self) -> int: ...
    def SetAutoCorrectPrecisionMode(self, value: int) -> None: ...
    def ClearModes(self) -> None: ...
    def Face(self) -> TopoDS_Face: ...
    def FixAddNaturalBound(self) -> bool: ...
    def GetFixAddNaturalBoundMode(self) -> int: ...
    def SetFixAddNaturalBoundMode(self, value: int) -> None: ...
    def FixIntersectingWires(self) -> bool: ...
    def GetFixIntersectingWiresMode(self) -> int: ...
    def SetFixIntersectingWiresMode(self, value: int) -> None: ...
    def FixLoopWire(self, aResWires: TopTools_SequenceOfShape) -> bool: ...
    def GetFixLoopWiresMode(self) -> int: ...
    def SetFixLoopWiresMode(self, value: int) -> None: ...
    def FixMissingSeam(self) -> bool: ...
    def GetFixMissingSeamMode(self) -> int: ...
    def SetFixMissingSeamMode(self, value: int) -> None: ...
    @overload
    def FixOrientation(self) -> bool: ...
    @overload
    def FixOrientation(self, MapWires: TopTools_DataMapOfShapeListOfShape) -> bool: ...
    def GetFixOrientationMode(self) -> int: ...
    def SetFixOrientationMode(self, value: int) -> None: ...
    def FixPeriodicDegenerated(self) -> bool: ...
    def GetFixPeriodicDegeneratedMode(self) -> int: ...
    def SetFixPeriodicDegeneratedMode(self, value: int) -> None: ...
    def FixSmallAreaWire(self, theIsRemoveSmallFace: bool) -> bool: ...
    def GetFixSmallAreaWireMode(self) -> int: ...
    def SetFixSmallAreaWireMode(self, value: int) -> None: ...
    def FixSplitFace(self, MapWires: TopTools_DataMapOfShapeListOfShape) -> bool: ...
    def GetFixSplitFaceMode(self) -> int: ...
    def SetFixSplitFaceMode(self, value: int) -> None: ...
    def GetFixWireMode(self) -> int: ...
    def SetFixWireMode(self, value: int) -> None: ...
    def FixWireTool(self) -> ShapeFix_Wire: ...
    def FixWiresTwoCoincEdges(self) -> bool: ...
    @overload
    def Init(self, face: TopoDS_Face) -> None: ...
    @overload
    def Init(
        self, surf: Geom_Surface, preci: float, fwd: Optional[bool] = True
    ) -> None: ...
    @overload
    def Init(
        self, surf: ShapeAnalysis_Surface, preci: float, fwd: Optional[bool] = True
    ) -> None: ...
    def Perform(self) -> bool: ...
    def GetRemoveSmallAreaFaceMode(self) -> int: ...
    def SetRemoveSmallAreaFaceMode(self, value: int) -> None: ...
    def Result(self) -> TopoDS_Shape: ...
    def SetMaxTolerance(self, maxtol: float) -> None: ...
    def SetMinTolerance(self, mintol: float) -> None: ...
    def SetMsgRegistrator(self, msgreg: ShapeExtend_BasicMsgRegistrator) -> None: ...
    def SetPrecision(self, preci: float) -> None: ...
    def Status(self, status: ShapeExtend_Status) -> bool: ...

class ShapeFix_FixSmallFace(ShapeFix_Root):
    def __init__(self) -> None: ...
    def ComputeSharedEdgeForStripFace(
        self,
        F: TopoDS_Face,
        E1: TopoDS_Edge,
        E2: TopoDS_Edge,
        F1: TopoDS_Face,
        tol: float,
    ) -> TopoDS_Edge: ...
    def FixFace(self, F: TopoDS_Face) -> TopoDS_Face: ...
    def FixPinFace(self, F: TopoDS_Face) -> bool: ...
    def FixShape(self) -> TopoDS_Shape: ...
    def FixSplitFace(self, S: TopoDS_Shape) -> TopoDS_Shape: ...
    def FixSpotFace(self) -> TopoDS_Shape: ...
    def FixStripFace(self, wasdone: Optional[bool] = False) -> TopoDS_Shape: ...
    def Init(self, S: TopoDS_Shape) -> None: ...
    def Perform(self) -> None: ...
    def RemoveFacesInCaseOfSpot(self, F: TopoDS_Face) -> bool: ...
    def RemoveFacesInCaseOfStrip(self, F: TopoDS_Face) -> bool: ...
    def ReplaceInCaseOfStrip(
        self, F: TopoDS_Face, E1: TopoDS_Edge, E2: TopoDS_Edge, tol: float
    ) -> bool: ...
    def ReplaceVerticesInCaseOfSpot(self, F: TopoDS_Face, tol: float) -> bool: ...
    def Shape(self) -> TopoDS_Shape: ...
    def SplitOneFace(
        self, F: TopoDS_Face, theSplittedFaces: TopoDS_Compound
    ) -> bool: ...

class ShapeFix_FixSmallSolid(ShapeFix_Root):
    def __init__(self) -> None: ...
    def Merge(
        self, theShape: TopoDS_Shape, theContext: ShapeBuild_ReShape
    ) -> TopoDS_Shape: ...
    def Remove(
        self, theShape: TopoDS_Shape, theContext: ShapeBuild_ReShape
    ) -> TopoDS_Shape: ...
    def SetFixMode(self, theMode: int) -> None: ...
    def SetVolumeThreshold(self, theThreshold: Optional[float] = -1.0) -> None: ...
    def SetWidthFactorThreshold(self, theThreshold: Optional[float] = -1.0) -> None: ...

class ShapeFix_Shape(ShapeFix_Root):
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, shape: TopoDS_Shape) -> None: ...
    def FixEdgeTool(self) -> ShapeFix_Edge: ...
    def FixFaceTool(self) -> ShapeFix_Face: ...
    def GetFixFreeFaceMode(self) -> int: ...
    def SetFixFreeFaceMode(self, value: int) -> None: ...
    def GetFixFreeShellMode(self) -> int: ...
    def SetFixFreeShellMode(self, value: int) -> None: ...
    def GetFixFreeWireMode(self) -> int: ...
    def SetFixFreeWireMode(self, value: int) -> None: ...
    def GetFixSameParameterMode(self) -> int: ...
    def SetFixSameParameterMode(self, value: int) -> None: ...
    def FixShellTool(self) -> ShapeFix_Shell: ...
    def GetFixSolidMode(self) -> int: ...
    def SetFixSolidMode(self, value: int) -> None: ...
    def FixSolidTool(self) -> ShapeFix_Solid: ...
    def GetFixVertexPositionMode(self) -> int: ...
    def SetFixVertexPositionMode(self, value: int) -> None: ...
    def GetFixVertexTolMode(self) -> int: ...
    def SetFixVertexTolMode(self, value: int) -> None: ...
    def FixWireTool(self) -> ShapeFix_Wire: ...
    def Init(self, shape: TopoDS_Shape) -> None: ...
    def Perform(
        self, theProgress: Optional[Message_ProgressRange] = Message_ProgressRange()
    ) -> bool: ...
    def SetMaxTolerance(self, maxtol: float) -> None: ...
    def SetMinTolerance(self, mintol: float) -> None: ...
    def SetMsgRegistrator(self, msgreg: ShapeExtend_BasicMsgRegistrator) -> None: ...
    def SetPrecision(self, preci: float) -> None: ...
    def Shape(self) -> TopoDS_Shape: ...
    def Status(self, status: ShapeExtend_Status) -> bool: ...

class ShapeFix_Shell(ShapeFix_Root):
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, shape: TopoDS_Shell) -> None: ...
    def ErrorFaces(self) -> TopoDS_Compound: ...
    def GetFixFaceMode(self) -> int: ...
    def SetFixFaceMode(self, value: int) -> None: ...
    def FixFaceOrientation(
        self,
        shell: TopoDS_Shell,
        isAccountMultiConex: Optional[bool] = True,
        NonManifold: Optional[bool] = False,
    ) -> bool: ...
    def FixFaceTool(self) -> ShapeFix_Face: ...
    def GetFixOrientationMode(self) -> int: ...
    def SetFixOrientationMode(self, value: int) -> None: ...
    def Init(self, shell: TopoDS_Shell) -> None: ...
    def NbShells(self) -> int: ...
    def Perform(
        self, theProgress: Optional[Message_ProgressRange] = Message_ProgressRange()
    ) -> bool: ...
    def SetMaxTolerance(self, maxtol: float) -> None: ...
    def SetMinTolerance(self, mintol: float) -> None: ...
    def SetMsgRegistrator(self, msgreg: ShapeExtend_BasicMsgRegistrator) -> None: ...
    def SetNonManifoldFlag(self, isNonManifold: bool) -> None: ...
    def SetPrecision(self, preci: float) -> None: ...
    def Shape(self) -> TopoDS_Shape: ...
    def Shell(self) -> TopoDS_Shell: ...
    def Status(self, status: ShapeExtend_Status) -> bool: ...

class ShapeFix_Solid(ShapeFix_Root):
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, solid: TopoDS_Solid) -> None: ...
    def GetCreateOpenSolidMode(self) -> bool: ...
    def SetCreateOpenSolidMode(self, value: bool) -> None: ...
    def GetFixShellMode(self) -> int: ...
    def SetFixShellMode(self, value: int) -> None: ...
    def GetFixShellOrientationMode(self) -> int: ...
    def SetFixShellOrientationMode(self, value: int) -> None: ...
    def FixShellTool(self) -> ShapeFix_Shell: ...
    def Init(self, solid: TopoDS_Solid) -> None: ...
    def Perform(
        self, theProgress: Optional[Message_ProgressRange] = Message_ProgressRange()
    ) -> bool: ...
    def SetMaxTolerance(self, maxtol: float) -> None: ...
    def SetMinTolerance(self, mintol: float) -> None: ...
    def SetMsgRegistrator(self, msgreg: ShapeExtend_BasicMsgRegistrator) -> None: ...
    def SetPrecision(self, preci: float) -> None: ...
    def Shape(self) -> TopoDS_Shape: ...
    def Solid(self) -> TopoDS_Shape: ...
    def SolidFromShell(self, shell: TopoDS_Shell) -> TopoDS_Solid: ...
    def Status(self, status: ShapeExtend_Status) -> bool: ...

class ShapeFix_SplitCommonVertex(ShapeFix_Root):
    def __init__(self) -> None: ...
    def Init(self, S: TopoDS_Shape) -> None: ...
    def Perform(self) -> None: ...
    def Shape(self) -> TopoDS_Shape: ...

class ShapeFix_Wire(ShapeFix_Root):
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, wire: TopoDS_Wire, face: TopoDS_Face, prec: float) -> None: ...
    def Analyzer(self) -> ShapeAnalysis_Wire: ...
    def ClearModes(self) -> None: ...
    def ClearStatuses(self) -> None: ...
    def GetClosedWireMode(self) -> bool: ...
    def SetClosedWireMode(self, value: bool) -> None: ...
    def Face(self) -> TopoDS_Face: ...
    def GetFixAddCurve3dMode(self) -> int: ...
    def SetFixAddCurve3dMode(self, value: int) -> None: ...
    def GetFixAddPCurveMode(self) -> int: ...
    def SetFixAddPCurveMode(self, value: int) -> None: ...
    def FixClosed(self, prec: Optional[float] = -1.0) -> bool: ...
    @overload
    def FixConnected(self, prec: Optional[float] = -1.0) -> bool: ...
    @overload
    def FixConnected(self, num: int, prec: float) -> bool: ...
    def GetFixConnectedMode(self) -> int: ...
    def SetFixConnectedMode(self, value: int) -> None: ...
    @overload
    def FixDegenerated(self) -> bool: ...
    @overload
    def FixDegenerated(self, num: int) -> bool: ...
    def GetFixDegeneratedMode(self) -> int: ...
    def SetFixDegeneratedMode(self, value: int) -> None: ...
    def FixEdgeCurves(self) -> bool: ...
    def GetFixEdgeCurvesMode(self) -> int: ...
    def SetFixEdgeCurvesMode(self, value: int) -> None: ...
    def FixEdgeTool(self) -> ShapeFix_Edge: ...
    def FixGap2d(self, num: int, convert: Optional[bool] = False) -> bool: ...
    def FixGap3d(self, num: int, convert: Optional[bool] = False) -> bool: ...
    def FixGaps2d(self) -> bool: ...
    def GetFixGaps2dMode(self) -> int: ...
    def SetFixGaps2dMode(self, value: int) -> None: ...
    def FixGaps3d(self) -> bool: ...
    def GetFixGaps3dMode(self) -> int: ...
    def SetFixGaps3dMode(self, value: int) -> None: ...
    def GetFixGapsByRangesMode(self) -> bool: ...
    def SetFixGapsByRangesMode(self, value: bool) -> None: ...
    def GetFixIntersectingEdgesMode(self) -> int: ...
    def SetFixIntersectingEdgesMode(self, value: int) -> None: ...
    @overload
    def FixLacking(self, force: Optional[bool] = False) -> bool: ...
    @overload
    def FixLacking(self, num: int, force: Optional[bool] = False) -> bool: ...
    def GetFixLackingMode(self) -> int: ...
    def SetFixLackingMode(self, value: int) -> None: ...
    def GetFixNonAdjacentIntersectingEdgesMode(self) -> int: ...
    def SetFixNonAdjacentIntersectingEdgesMode(self, value: int) -> None: ...
    def FixNotchedEdges(self) -> bool: ...
    def GetFixNotchedEdgesMode(self) -> int: ...
    def SetFixNotchedEdgesMode(self, value: int) -> None: ...
    def GetFixRemoveCurve3dMode(self) -> int: ...
    def SetFixRemoveCurve3dMode(self, value: int) -> None: ...
    def GetFixRemovePCurveMode(self) -> int: ...
    def SetFixRemovePCurveMode(self, value: int) -> None: ...
    @overload
    def FixReorder(self, theModeBoth: Optional[bool] = False) -> bool: ...
    @overload
    def FixReorder(self, wi: ShapeAnalysis_WireOrder) -> bool: ...
    def GetFixReorderMode(self) -> int: ...
    def SetFixReorderMode(self, value: int) -> None: ...
    def GetFixReversed2dMode(self) -> int: ...
    def SetFixReversed2dMode(self, value: int) -> None: ...
    def GetFixSameParameterMode(self) -> int: ...
    def SetFixSameParameterMode(self, value: int) -> None: ...
    def FixSeam(self, num: int) -> bool: ...
    def GetFixSeamMode(self) -> int: ...
    def SetFixSeamMode(self, value: int) -> None: ...
    def GetFixSelfIntersectingEdgeMode(self) -> int: ...
    def SetFixSelfIntersectingEdgeMode(self, value: int) -> None: ...
    def FixSelfIntersection(self) -> bool: ...
    def GetFixSelfIntersectionMode(self) -> int: ...
    def SetFixSelfIntersectionMode(self, value: int) -> None: ...
    def FixShifted(self) -> bool: ...
    def GetFixShiftedMode(self) -> int: ...
    def SetFixShiftedMode(self, value: int) -> None: ...
    @overload
    def FixSmall(self, lockvtx: bool, precsmall: Optional[float] = 0.0) -> int: ...
    @overload
    def FixSmall(self, num: int, lockvtx: bool, precsmall: float) -> bool: ...
    def GetFixSmallMode(self) -> int: ...
    def SetFixSmallMode(self, value: int) -> None: ...
    def GetFixTailMode(self) -> int: ...
    def SetFixTailMode(self, value: int) -> None: ...
    def FixTails(self) -> bool: ...
    def GetFixVertexToleranceMode(self) -> int: ...
    def SetFixVertexToleranceMode(self, value: int) -> None: ...
    @overload
    def Init(self, wire: TopoDS_Wire, face: TopoDS_Face, prec: float) -> None: ...
    @overload
    def Init(self, saw: ShapeAnalysis_Wire) -> None: ...
    def IsLoaded(self) -> bool: ...
    def IsReady(self) -> bool: ...
    def LastFixStatus(self, status: ShapeExtend_Status) -> bool: ...
    @overload
    def Load(self, wire: TopoDS_Wire) -> None: ...
    @overload
    def Load(self, sbwd: ShapeExtend_WireData) -> None: ...
    def GetModifyGeometryMode(self) -> bool: ...
    def SetModifyGeometryMode(self, value: bool) -> None: ...
    def GetModifyRemoveLoopMode(self) -> int: ...
    def SetModifyRemoveLoopMode(self, value: int) -> None: ...
    def GetModifyTopologyMode(self) -> bool: ...
    def SetModifyTopologyMode(self, value: bool) -> None: ...
    def NbEdges(self) -> int: ...
    def Perform(self) -> bool: ...
    def GetPreferencePCurveMode(self) -> bool: ...
    def SetPreferencePCurveMode(self, value: bool) -> None: ...
    def SetFace(self, face: TopoDS_Face) -> None: ...
    def SetMaxTailAngle(self, theMaxTailAngle: float) -> None: ...
    def SetMaxTailWidth(self, theMaxTailWidth: float) -> None: ...
    def SetPrecision(self, prec: float) -> None: ...
    @overload
    def SetSurface(self, surf: Geom_Surface) -> None: ...
    @overload
    def SetSurface(self, surf: Geom_Surface, loc: TopLoc_Location) -> None: ...
    def StatusClosed(self, status: ShapeExtend_Status) -> bool: ...
    def StatusConnected(self, status: ShapeExtend_Status) -> bool: ...
    def StatusDegenerated(self, status: ShapeExtend_Status) -> bool: ...
    def StatusEdgeCurves(self, status: ShapeExtend_Status) -> bool: ...
    def StatusFixTails(self, status: ShapeExtend_Status) -> bool: ...
    def StatusGaps2d(self, status: ShapeExtend_Status) -> bool: ...
    def StatusGaps3d(self, status: ShapeExtend_Status) -> bool: ...
    def StatusLacking(self, status: ShapeExtend_Status) -> bool: ...
    def StatusNotches(self, status: ShapeExtend_Status) -> bool: ...
    def StatusRemovedSegment(self) -> bool: ...
    def StatusReorder(self, status: ShapeExtend_Status) -> bool: ...
    def StatusSelfIntersection(self, status: ShapeExtend_Status) -> bool: ...
    def StatusSmall(self, status: ShapeExtend_Status) -> bool: ...
    def Wire(self) -> TopoDS_Wire: ...
    def WireAPIMake(self) -> TopoDS_Wire: ...
    def WireData(self) -> ShapeExtend_WireData: ...

class ShapeFix_Wireframe(ShapeFix_Root):
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, shape: TopoDS_Shape) -> None: ...
    def CheckSmallEdges(
        self,
        theSmallEdges: TopTools_MapOfShape,
        theEdgeToFaces: TopTools_DataMapOfShapeListOfShape,
        theFaceWithSmall: TopTools_DataMapOfShapeListOfShape,
        theMultyEdges: TopTools_MapOfShape,
    ) -> bool: ...
    def ClearStatuses(self) -> None: ...
    def FixSmallEdges(self) -> bool: ...
    def FixWireGaps(self) -> bool: ...
    def LimitAngle(self) -> float: ...
    def Load(self, shape: TopoDS_Shape) -> None: ...
    def MergeSmallEdges(
        self,
        theSmallEdges: TopTools_MapOfShape,
        theEdgeToFaces: TopTools_DataMapOfShapeListOfShape,
        theFaceWithSmall: TopTools_DataMapOfShapeListOfShape,
        theMultyEdges: TopTools_MapOfShape,
        theModeDrop: Optional[bool] = False,
        theLimitAngle: Optional[float] = -1,
    ) -> bool: ...
    def GetModeDropSmallEdges(self) -> bool: ...
    def SetModeDropSmallEdges(self, value: bool) -> None: ...
    def SetLimitAngle(self, theLimitAngle: float) -> None: ...
    def Shape(self) -> TopoDS_Shape: ...
    def StatusSmallEdges(self, status: ShapeExtend_Status) -> bool: ...
    def StatusWireGaps(self, status: ShapeExtend_Status) -> bool: ...

# classnotwrapped
class ShapeFix_WireSegment: ...

# harray1 classes
# harray2 classes
# hsequence classes
